#ifndef INIT_PREMUTACION_CPU_CU
#define INIT_PREMUTACION_CPU_CU

#include "../fitness/fitnessPermutacion.cu"

void inicializarPoblacionPermutacionCPUManual(int* poblacion, float* fitnessActual, MersenneTwister *mt, int cantCromosomasPoblacion, float* fitnessOrdenadoHostCPU, float* matrizCostosHost){
	//Obtengo posicion a escribir.
	int posicionCromosoma = 0;
	int posicionFitness = 0;
	//inicializo la poblacion en -1
	for(int i = 0; i < cantGenesEnCromosoma * cantidadPoblacionesCPU * cantCromosomasPoblacion; i++){
		poblacion[posicionCromosoma+i] = -1;
	}
	for(int i = 0; i< cantidadPoblacionesCPU * cantCromosomasPoblacion; i++){
		for(int j = 0; j<cantGenesEnCromosoma; j++){
			//Genero valor aleatorio.
			unsigned int r = (mt->genrand_int32()% cantGenesEnCromosoma);
			while(poblacion[posicionCromosoma+r] != -1){
				r = (r+1) % cantGenesEnCromosoma;
			}
			poblacion[posicionCromosoma+r] = j;
		}
		posicionCromosoma = posicionCromosoma + cantGenesEnCromosoma;
	}
	posicionCromosoma = 0;
	for(int i = 0; i< cantidadPoblacionesCPU * cantCromosomasPoblacion; i++){
		fitnessActual[posicionFitness] = calcularFitnessPermutacionCPU(poblacion, posicionCromosoma, matrizCostosHost);
		fitnessOrdenadoHostCPU[posicionFitness] = fitnessActual[posicionFitness];
		posicionFitness++;
		posicionCromosoma = posicionCromosoma + cantGenesEnCromosoma;
	}
}


#endif
